波長スペクトルからRGB,sRGBへ-02

 

1.蛍光などの波長スペクトルを取得

これは,いろいろな手法で,波長スペクトルを取得します.今回は蛍光分光光度計,およびシミュレーションで淑徳しました.


2.XYZ空間に変換,Yで規格化

XYZ空間

これは,私の理解では,

 人間の目の感度特性に合わせた波長依存性を考慮に入れた補正

と理解しています.歴史的にみると,マイナスの値があったりややこしいですが,とりあえずは,

 CIE 1931 XYZ等色関数

を用いて,補正を掛けます.大元は,CIE,のこのサイト,だと思います.

図示すると,

のようになります.赤の感度が440nmのエリアにもあることが面白いですね.

この補正データを元の波長スペクトルに掛けます.その後,\( \Large \bar{y} \),の値で補正を掛けます.

この理由は,

 y(緑)の特性が全体の明るさを示している
 したがって,明るさに依存しないRGBの値を求めたいので明るさyで補正を掛ける

とのことらしいです.つまり,

\( \Large \displaystyle X' = \frac{\bar{x}}{\bar{y}} \)

\( \Large \displaystyle Y' = \frac{\bar{y}}{\bar{y}} = 1 \)

\( \Large \displaystyle Z' = \frac{\bar{z}}{\bar{y}} \)

となります.


3.少し補正を掛ける(1/4程度,石島の独断

プログラムを作成するにあたって,単波長(正規分布),で作成したのですが,後述するように,

 XYZをRGBに変換

する際に,0~1,の値に収めて,8ビット,255階調にするために,255倍するのですが,

 RGBに変換した時点で1を超えてしまう

ことが多々ありました.これは推測するに,単波長で計算しているから,ということなので,ピーキーな波長特性を持つ場合にはそのようになることがあるらしいです.

今回は,RGBの割合が重要でしたので,1/4,程度の補正を掛けました.

\( \Large \displaystyle X = \frac{1}{4} X' \)

\( \Large \displaystyle Y = \frac{1}{4} Y' \)

\( \Large \displaystyle Z = \frac{1}{4} Z' \)

この操作は,あくまで石島の独断,です.


4.XYZをRGBに変換

変換には,行列式,を使って行います.

\( \Large \displaystyle \begin{pmatrix} R \\ G \\ B \end{pmatrix} = \begin{pmatrix} 3.24045 & -1.53714 & -0.498531 \\ -0.969266 & 1.87601 & 0.041556 \\ 0.0556434 & -0.204026 & 1.05723 \end{pmatrix} \begin{pmatrix} X \\ Y \\ G \end{pmatrix}\)

いろいろな変換値,があるようですが,今回は,代表的な,

 A Standard Default Color Space for the Internet - sRGB
Michael Stokes (Hewlett-Packard), Matthew Anderson (Microsoft),
Srinivasan Chandrasekar (Microsoft), Ricardo Motta (Hewlett-Packard)
Version 1.10, November 5, 1996

を使いました(リンクはたぶん,ここ


5.マイナス値を0に,1以上を1に修正

この計算で問題となってくるのが,

 マイナス,1以上の値が計算されてしまう

点です.

例えば,

 X=1, Y=1, Z=0 : 1以上
 X=0, Y=1, Z=0 : マイナス

となっちゃいます.その場合には,

 マイナス:0
 1以上:1

に修正します.なので,3.の補正が効いてくるわけです.

 


6.必要に応じてRGBをsRGBに変換

は次ページに

 

 

 

 

ltr